home *** CD-ROM | disk | FTP | other *** search
/ Best of www.BestZips.com (Collector's Edition) / Best of WWW.BESTZIPS.COM Collector's Edition (JCSM Shareware) (JCS Marketing).ISO / tutorial / adatu311.zip / TASKING.ANS (.png) < prev    next >
ANSI Art File  |  1996-01-10  |  2KB  |  640x752  |  1-bit (2 colors)
Labels: text | screenshot | font
OCR: Our solution to Outside Assignment 6: with text_io, calendar; use text_io, calendar; procedure tasking is interval : constant duration := 5.0; total_intervals : constant positive := 9; start_time quitting_time constant time := clock; : constant time := start_time total_intervals*interval; next_time : time := start_time; task type tick is ENTRY IDENTIFY (TASK_NUMBER : IN NATURAL ); entry shutdown; end tick; T : ARRAY(1 .. 3) OF TICK; PERIOD CONSTANT ARRAY (T'RANGE) OF POSITIVE := (2, 3, 4); TIMER : ARRAY(T'RANGE) OF NATURAL := (OTHERS => 0); task body tick is quit : boolean := false; begin while not quit loop select ACCEPT IDENTIFY ( TASK_NUMBER : IN NATURAL ) DO PUT_LINE ( "Task number" & INTEGER' IMAGE ( TASK_NUMBER) & is starting. "); END IDENTIFY; or accept shutdown; quit := true; end select; end loop; end tick; begin while next_time < quitting_time loop FOR I IN T'RANGE LOOP IF TIMER(I) = 0 THEN T(I) . IDENTIFY(I ) ; TIMER(I) := PERIOD(I) ; END IF; TIMER(I) := TIMER(I) - 1; END LOOP; next_time := next_time + interval; put_line("(5-second delay)"); delay next_time - clock; end loop; FOR I IN T'RANGE LOOP T(I) . SHUTDOWN; END LOOP; end tasking;